]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extensionPrefs: Improve handling of OutOfDate extensions
authorFlorian Müllner <fmuellner@gnome.org>
Sat, 6 Sep 2014 13:27:52 +0000 (15:27 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Sat, 6 Sep 2014 20:06:23 +0000 (22:06 +0200)
Our current UI is horrible in dealing with outdated extensions - we
don't give users any indication at all that something is not working as
expected (unless hiding the prefs button as we did until the last commit
counts).
To fix this, make the enable switch insensitive to indicate OutOfDate
extensions.

https://bugzilla.gnome.org/show_bug.cgi?id=736185

js/extensionPrefs/main.js

index f56e5b6d4838bbdd51a7767c4972f5ef79fdb209..e4d2e96bd6d5227c12dc4fc4267ed8550895088b 100644 (file)
@@ -281,6 +281,10 @@ const ExtensionRow = new Lang.Class({
             function() {
                 this._switch.state = this._isEnabled();
             }));
+        this._settings.connect('changed::disable-extension-version-validation',
+            Lang.bind(this, function() {
+                this._switch.sensitive = this._canEnable();
+            }));
 
         this._buildUI();
     },
@@ -319,6 +323,7 @@ const ExtensionRow = new Lang.Class({
         this.prefsButton = button;
 
         this._switch = new Gtk.Switch({ valign: Gtk.Align.CENTER,
+                                        sensitive: this._canEnable(),
                                         state: this._isEnabled() });
         this._switch.connect('notify::active', Lang.bind(this,
             function() {
@@ -331,6 +336,13 @@ const ExtensionRow = new Lang.Class({
         hbox.add(this._switch);
     },
 
+    _canEnable: function() {
+        let extension = ExtensionUtils.extensions[this.uuid];
+        let checkVersion = !this._settings.get_boolean('disable-extension-version-validation');
+
+        return !(checkVersion && ExtensionUtils.isOutOfDate(extension));
+    },
+
     _isEnabled: function() {
         let extensions = this._settings.get_strv('enabled-extensions');
         return extensions.indexOf(this.uuid) != -1;